package nl.cypherpunk.proLearner.fuzzing;

import de.learnlib.api.SUL;
import net.automatalib.words.Alphabet;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Map;

public interface SUT<I,O> extends SUL<I, O> {
    public String sendFuzzingMessage(byte[] message) throws Exception;

    public String messageToSymbol(byte[] message) throws UnsupportedEncodingException;

    public Alphabet<String> getAlphabet();

    public int getTotalNum();

    public boolean addMapper(String type, byte[] message);

    public int getIndexOfSymbol(byte[] message);

    public void saveMapper();

    public boolean delMapper(String subtype);

    public Map<String,Integer> getSubtypes();

    public int getCoverage() throws IOException;

    public byte[] getCurrent();

    public void exit();
}
